commonlibsse_ng\re\p\PlayerCharacter/runtime_info.rs
1use crate::re::BSCoreTypes::RefHandle;
2use crate::re::BSPointerHandle::{ActorHandle, ObjectRefHandle};
3use crate::re::BSTArray::BSTArray;
4use crate::re::BSTSmartPointer::BSTSmartPointer;
5use crate::re::Crime::CRIME_TYPE_CEnum;
6use crate::re::NiAVObject::NiAVObject;
7use crate::re::NiSmartPointer::NiPointer;
8use crate::re::PlayerCharacter::crime::TeleportPath;
9use crate::re::PlayerCharacter::skill::PlayerSkills;
10use crate::re::TESBoundObject::TESBoundObject;
11use crate::re::TESForm::TESForm;
12use crate::re::{AlchemyItem, BSLight, BipedAnim, CombatGroup, NiNode, TESClass};
13
14const _: () = assert!(7 == CRIME_TYPE_CEnum::count());
15
16#[repr(C, packed(4))]
17pub struct INFO_RUNTIME_DATA {
18 // dummy: [u8; 20],
19 pub sleepSeconds: u32, // 014
20 pub largeBiped: BSTSmartPointer<BipedAnim>, // 018
21 pub firstPerson3D: NiPointer<NiNode>, // 020
22 pub eyeHeight: f32, // 028
23 pub greetTimer: f32, // 02C
24 pub encumberedTimer: f32, // 030
25 pub powerAttackTimer: f32, // 034
26 pub hoursToSleep: i32, // 038
27 pub amountStolenSold: i32, // 03C
28 pub valueStolen: u32, // 040
29 pub lastRiddenMount: ActorHandle, // 044
30 pub lightTarget: ActorHandle, // 048
31 pub sortActorDistanceTimer: f32, // 04C
32 pub sitHeadingDelta: f32, // 050 only in SSE, VR needs adjustment
33 pub playerMapMarker: ObjectRefHandle, // 054
34 pub playerMarkerPath: *mut TeleportPath, // 058
35 pub skillTrainingsThisLevel: u32, // 060
36 pub unk064: u32, // 064
37 pub defaultClass: *mut TESClass, // 068
38 pub unk070: u64, // 070
39 pub crimeCounts: [u32; 7], // 078 7: CRIME_TYPE::TOTAL
40 pub unk094: u32, // 094
41 pub pendingPoison: *mut AlchemyItem, // 098
42 pub lastPlayingTimeUpdate: i64, // 0A0
43 pub totalPlayingTime: i64, // 0A8
44 pub characterSeed: i32, // 0B0
45 pub unk0B4: u32, // 0B4
46 pub lastKnownGoodLocation: *mut TESForm, // 0B8
47 pub unk0C0: u32, // 0C0
48 pub unk0C4: u32, // 0C4
49 pub firstPersonLight: NiPointer<BSLight>, // 0C8
50 pub thirdPersonLight: NiPointer<BSLight>, // 0D0
51 pub dropAngleMod: f32, // 0D8
52 pub lastDropAngleMod: f32, // 0DC
53 pub skills: *mut PlayerSkills, // 0E0
54 pub autoAimActor: ActorHandle, // 0E8
55 pub unk0EC: RefHandle, // 0EC
56 pub unk118: u64, // 0F0
57 pub targeted3D: NiPointer<NiAVObject>, // 0F8
58 pub combatGroup: *mut CombatGroup, // 100
59 pub actorsToDisplayOnTheHUDArray: BSTArray<ActorHandle>, // 108
60 pub advanceObject: *mut TESForm, // 120
61 pub lastOneHandItems: [*mut TESBoundObject; 2], // 128
62 pub teammateCount: u32, // 138
63 pub combatTimer: f32, // 13C
64 pub yieldTimer: f32, // 140
65 pub chaseTimer: f32, // 144
66 pub drawSheatheSafetyTimer: f32, // 148
67 pub unk14C: u32, // 14C
68}
69const _: () = assert!(core::mem::size_of::<INFO_RUNTIME_DATA>() == 0x13C);
70
71#[repr(C, packed(4))]
72pub struct VR_INFO_RUNTIME_DATA {
73 pub sleepSeconds: u32, // 0xFE0
74 pub unkFE4: u32, // 0xFE4
75 pub largeBiped: BSTSmartPointer<BipedAnim>, // 0xFE8
76 pub firstPerson3D: NiPointer<NiNode>, // 0xFF0
77 pub eyeHeight: f32, // 0xFF8
78 pub greetTimer: f32, // 0xFFC
79 pub encumberedTimer: f32, // 0x1000
80 pub powerAttackTimer: f32, // 0x1004
81 pub hoursToSleep: i32, // 0x1008
82 pub amountStolenSold: i32, // 0x100C
83 pub valueStolen: u32, // 0x1010
84 pub lastRiddenMount: ActorHandle, // 0x1014
85 pub lightTarget: ActorHandle, // 0x1018
86 pub sortActorDistanceTimer: f32, // 0x101C
87 pub playerMapMarker: ObjectRefHandle, // 0x1020
88 pub pad1024: u32, // 0x1024
89 pub playerMarkerPath: *mut TeleportPath, // 0x1028
90 pub skillTrainingsThisLevel: u32, // 0x1030
91 pub unk1034: u32, // 0x1034
92 pub defaultClass: *mut TESClass, // 0x1038
93 pub unk1040: u64, // 0x1040
94 pub crimeCounts: [u32; CRIME_TYPE_CEnum::count()], // 0x1048
95 pub unk964: u32, // 0x1064
96 pub pendingPoison: *mut AlchemyItem, // 0x1068
97 pub lastPlayingTimeUpdate: i64, // 0x1070
98 pub totalPlayingTime: i64, // 0x1078
99 pub characterSeed: i32, // 0x1080
100 pub unk984: u32, // 0x1084
101 pub lastKnownGoodLocation: *mut TESForm, // 0x1088
102 pub unk990: u32, // 0x1090
103 pub unk994: u32, // 0x1094
104 pub firstPersonLight: NiPointer<BSLight>, // 0x1098
105 pub thirdPersonLight: NiPointer<BSLight>, // 0x10A0
106 pub dropAngleMod: f32, // 0x10A8
107 pub lastDropAngleMod: f32, // 0x10AC
108 pub skills: *mut PlayerSkills, // 0x10B0
109 pub autoAimActor: ActorHandle, // 0x10B8
110 pub unk9BC: RefHandle, // 0x10BC
111 pub unk9C0: u64, // 0x10C0
112 pub targeted3D: NiPointer<NiAVObject>, // 0x10C8
113 pub combatGroup: *mut CombatGroup, // 0x10D0
114 pub actorsToDisplayOnTheHUDArray: BSTArray<ActorHandle>, // 0x10D8
115 pub advanceObject: *mut TESForm, // 0x10F0
116 pub lastOneHandItems: [*mut TESBoundObject; 2], // 0x10F8
117 pub teammateCount: u32, // 0x1108
118 pub combatTimer: f32, // 0x110C
119 pub yieldTimer: f32, // 0x1110
120 pub chaseTimer: f32, // 0x1114
121 pub drawSheatheSafetyTimer: f32, // 0x1118
122 pub unk111C: u32, // 0x111C
123}
124const _: () = assert!(core::mem::size_of::<VR_INFO_RUNTIME_DATA>() == 0x140);